The invention relates to evaluating the runtime performance of a computer program.
A digital data processing system is an integrated set of hardware and software, i.e., physical devices which make up a computer, and algorithms and data structures which make up computer programs. Such a system is capable of storing and executing data and operations necessary to complete a given task.
Generally, a computer programmer defines a computer program using the operations and data structures of a high level programming language, e.g., FORTRAN, C, or Modula-2. The programming language provides primitive operations, e.g., add and store, that are organized into algorithms according to sequence control operations, e.g., if then, while, and goto, to manipulate various data, e.g., numbers and characters, in the data structures. Such a definition of a program is referred to as the source code of the program.
Next, the programmer submits the source code to a compiler which creates object code from the source code. A linker then links the object code with other object code, e.g., object code from other modules written by the programmer, or object code from library routines, to create executable code, i.e., a binary image.
Performance evaluation tools monitor a computer program to see how often and under what circumstances its operations execute according to a variety of criteria, e.g., execution counts and execution times. Previous performance evaluation systems and methods, "profilers," require either access to the source code of the computer program or to be compiled and linked with the computer program before execution. Profilers requiring access to source code are generally statistical in nature. Over long periods of time, they monitor a program as it executes, periodically generate an interrupt, and record the contents of various registers. Profilers that are compiled and linked into the source code of a computer program generate runtime calls to an outside routine which records various statistics.